import {
    app
} from 'electron';

// 插件管理工具
export class Plugins {
    private plugins: Map<string, any> = new Map();

    constructor() {
        
    }

    /**
     * 注册插件
     * @param name 插件名称
     * @param plugin 插件
     */
    public register(name: string, plugin: any) {
        if (this.plugins.has(name)) {
            throw new Error(`Plugin ${name} already registered`);
        }
        this.plugins.set(name, plugin);
    }

    /**
     * 获取插件
     * @param name 插件名称
     * @returns 插件
     */
    public getPlugin(name: string) {
        return this.plugins.get(name);
    }

    /**
     * 初始化插件
     */
    public initialize() {
        this.plugins.forEach((plugin, name) => {
            plugin.initialize();
        });
    }
}

export default new Plugins();